import { parse } from 'querystring';
import moment from 'moment';
/* eslint no-useless-escape:0 import/prefer-default-export:0 */
const reg = /(((^https?:(?:\/\/)?)(?:[-;:&=\+\$,\w]+@)?[A-Za-z0-9.-]+(?::\d+)?|(?:www.|[-;:&=\+\$,\w]+@)[A-Za-z0-9.-]+)((?:\/[\+~%\/.\w-_]*)?\??(?:[-\+=&;%@.\w_]*)#?(?:[\w]*))?)$/;

export const isUrl = (path: string): boolean => reg.test(path);

export const isAntDesignPro = (): boolean => {
  if (ANT_DESIGN_PRO_ONLY_DO_NOT_USE_IN_YOUR_PRODUCTION === 'site') {
    return true;
  }
  return window.location.hostname === 'preview.pro.ant.design';
};

// 给官方演示站点用，用于关闭真实开发环境不需要使用的特性
export const isAntDesignProOrDev = (): boolean => {
  const { NODE_ENV } = process.env;
  if (NODE_ENV === 'development') {
    return true;
  }
  return isAntDesignPro();
};

/**
 * 将预填表单的值，是日期时间格式的转换成 moment 类型
 * @param {*} values 表单数据
 */
export const momentAll = (values:any) => {
  if (!values || typeof values !== 'object') return values;
  for (let i in values) {
    if (
      /^\d{4}(\-|\\|\/|\s)\d{1,2}(\-|\\|\/|\s)\d{1,2}\s\d{1,2}:\d{1,2}:\d{1,2}$/.test(values[i]) ||
      /^\d{4}(\-|\\|\/|\s)\d{1,2}(\-|\\|\/|\s)\d{1,2}$/.test(values[i])
    ) {
      values[i] = moment(values[i]);
    }
  }
  return values;
};

export const getPageQuery = () => {
  const { href } = window.location;
  const qsIndex = href.indexOf('?');
  const sharpIndex = href.indexOf('#');

  if (qsIndex !== -1) {
    if (qsIndex > sharpIndex) {
      return parse(href.split('?')[1]);
    }

    return parse(href.slice(qsIndex + 1, sharpIndex));
  }

  return {};
};
